package simonby.top.annualring.infrastructure.security;

import cn.hutool.crypto.SecureUtil;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 密码加密服务
 * 提供密码加密和验证功能（使用MD5算法）
 */
@Service
public class PasswordEncryptionService {

    /**
     * 加密密码
     * @param rawPassword 原始密码
     * @return 加密后的密码（MD5哈希值）
     */
    public String encodePassword(String rawPassword) {
        return SecureUtil.md5(rawPassword);
    }
    
    /**
     * 验证密码
     * @param rawPassword 原始密码
     * @param encodedPassword 加密后的密码
     * @return 是否匹配
     */
    public boolean matches(String rawPassword, String encodedPassword) {
        // 处理可能的空值情况
        if (rawPassword == null || encodedPassword == null) {
            return false;
        }
        
        // 对原始密码进行MD5哈希并与存储的哈希值比较
        String password = encodePassword(rawPassword);
        return password.equals(encodedPassword);
    }
}